package com.malty.apimanage.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.malty.apimanage.domain.dto.user.*;
import com.malty.apimanage.domain.vo.UserVO;
import com.malty.common.domain.entity.UserInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author Administrator
 * @description 针对表【user_info】的数据库操作Service
 * @createDate 2025-09-25 14:40:38
 */
public interface UserInfoService extends IService<UserInfo> {

    /**
     * 用户注册
     *
     * @param userRegisterReq 注册请求
     * @return 注册结果 返回用户id
     */
    long userRegister(UserRegisterReq userRegisterReq);

    /**
     * 获取登录用户的信息
     *
     * @param request
     * @return
     */
    UserVO getLoginUser(HttpServletRequest request);

    /**
     * 用户登录
     *
     * @param userLoginReq
     * @return
     */
    UserInfo userLogin(UserLoginReq userLoginReq);

    /**
     * 用户注销
     *
     * @param request
     * @return
     */
    boolean userLogout(HttpServletRequest request);

    /**
     * 新增用户
     *
     * @param userAddRequest
     * @return
     */
    UserInfo saveUser(UserAddReq userAddRequest);

    /**
     * 删除用户
     *
     * @param id
     * @return
     */
    UserVO getUserById(Long id);

    /**
     * 条件查询用户
     *
     * @param userQueryReq
     * @return
     */
    List<UserVO> listUserByQuery(UserQueryReq userQueryReq);

    /**
     * 分页条件查询用户
     *
     * @param userQueryReq
     * @return
     */
    Page<UserVO> pageList(UserQueryReq userQueryReq);

    /**
     * 根据id更新用户
     *
     * @param userUpdateRequest
     * @return
     */
    boolean updateUserById(UserUpdateReq userUpdateRequest);
}
